31 research outputs found

    A Calculus for Modular Loop Acceleration

    Get PDF
    Loop acceleration can be used to prove safety, reachability, runtime bounds, and (non-)termination of programs operating on integers. To this end, a variety of acceleration techniques has been proposed. However, all of them are monolithic: Either they accelerate a loop successfully or they fail completely. In contrast, we present a calculus that allows for combining acceleration techniques in a modular way and we show how to integrate many existing acceleration techniques into our calculus. Moreover, we propose two novel acceleration techniques that can be incorporated into our calculus seamlessly. An empirical evaluation demonstrates the applicability of our approach

    A Calculus for Modular Loop Acceleration and Non-Termination Proofs

    Get PDF
    Loop acceleration can be used to prove safety, reachability, runtime bounds, and (non-)termination of programs. To this end, a variety of acceleration techniques has been proposed. However, so far all of them have been monolithic, i.e., a single loop could not be accelerated using a combination of several different acceleration techniques. In contrast, we present a calculus that allows for combining acceleration techniques in a modular way and we show how to integrate many existing acceleration techniques into our calculus. Moreover, we propose two novel acceleration techniques that can be incorporated into our calculus seamlessly. Some of these acceleration techniques apply only to non-terminating loops. Thus, combining them with our novel calculus results in a new, modular approach for proving non-termination. An empirical evaluation demonstrates the applicability of our approach, both for loop acceleration and for proving non-termination.Comment: arXiv admin note: substantial text overlap with arXiv:2001.0151

    ADCL: Acceleration Driven Clause Learning for Constrained Horn Clauses

    Full text link
    Constrained Horn Clauses (CHCs) are often used in automated program verification. Thus, techniques for (dis-)proving satisfiability of CHCs are a very active field of research. On the other hand, acceleration techniques for computing formulas that characterize the N-fold closure of loops have successfully been used for static program analysis. We show how to use acceleration to avoid repeated derivations with recursive CHCs in resolution proofs, which reduces the length of the proofs drastically. This idea gives rise to a novel calculus for (dis)proving satisfiability of CHCs, called Acceleration Driven Clause Learning (ADCL). We implemented this new calculus in our tool LoAT and evaluate it empirically in comparison to other state-of-the-art tools

    Proving Non-Termination by Acceleration Driven Clause Learning

    Full text link
    We recently proposed Acceleration Driven Clause Learning (ADCL), a novel calculus to analyze satisfiability of Constrained Horn Clauses (CHCs). Here, we adapt ADCL to transition systems and introduce ADCL-NT, a variant for disproving termination. We implemented ADCL-NT in our tool LoAT and evaluate it against the state of the art

    Inferring Lower Bounds for Runtime Complexity

    Get PDF
    We present the first approach to deduce lower bounds for innermost runtime complexity of term rewrite systems (TRSs) automatically. Inferring lower runtime bounds is useful to detect bugs and to complement existing techniques that compute upper complexity bounds. The key idea of our approach is to generate suitable families of rewrite sequences of a TRS and to find a relation between the length of such a rewrite sequence and the size of the first term in the sequence. We implemented our approach in the tool AProVE and evaluated it by extensive experiments

    R+EVUE THE B-SIDE

    Get PDF
    Visible from only one perspective at a time, architecture suffers the fate of never revealing itself as a whole. An inherent duplicity arises between what can be seen and what remains hidden. The back side—which never shows a representative face nor welcomes us into the building and rarely gets printed in glossy architecture magazines—is the overlooked side of architecture. As a result, we studied the backs of a few famous buildings. What we found is the B-side of architecture. Liberated from the front’s representative obligations, the B-side is an ambiguous space of programmatic, representative, contextual or even ideological experimentation. We represent our discoveries through a series of analytical and experimental drawings

    R+EVUE 20%

    Get PDF
    Organizational and administrative activities have shed their typological corset. Having cut spatial ties to the office, they are now at home almost anywhere. According to current studies, around 20% of office space in Germany will be obsolete in the medium term . This corresponds to a floor area of more than 75 million square meters. Calculated against the average per capita living space of 47,7 sqm , this represents enough space to house almost 2 million people. This equation is grossly simplified. It is problematic for, amongst other reasons, its exclusion of variables such as a building’s structural character, its urban location, and its proximity to technical and social infrastructures. The current demand for living space - especially in metropolitan areas - and the simultaneous necessity to establish more sustainable architectural practices, makes the conversion of existing buildings inevitable. This brings the above-mentioned issues to the fore, and will require the analysis of these buildings’ potentials and the architectural tools for exploiting them. R+EVUE 2 presents ten case studies, each making use of the same already-vacant office structure: an administrative building from the 1970s in Hamburg Wansbek. The object under investigation serves as a stand-in for the office buildings which pervade the peripheries of large German cities. Through consideration of this building’s specific structural and urban characteristics, various strategies for reappropriation are examined. The studies were produced systematically: the same office structure superimposed with ten residential projects, selected to form a broad typological spectrum. The frictions and conflicts which arise during this overlay process become catalysts for specific design solutions and raise more general questions about the reappropriation of existing structures. By adapting the characteristic typological features of the residential buildings to the structure of the office building, new and unexpected approaches are generated. The depth and extent of each study’s intervention is measurable against the existing structure. In the form of red-yellow plans and visualizations, both demolition measures and structural additions are clearly illustrated. The excerpt from the portfolio of office buildings is contrasted with a selection of residential building references. The ten residential building references cover a wide range of different circulation typologies, apartment types, construction principles and scales. The different housing references are all projected onto the structure of one vacant office building. Because its concrete skeleton is typical for an entire generation of commercial structures, the findings of the housing projections resonate beyond this specific case study

    Automatically proving termination and memory safety for programs with pointer arithmetic

    Get PDF
    While automated verification of imperative programs has been studied intensively, proving termination of programs with explicit pointer arithmetic fully automatically was still an open problem. To close this gap, we introduce a novel abstract domain that can track allocated memory in detail. We use it to automatically construct a symbolic execution graph that over-approximates all possible runs of a program and that can be used to prove memory safety. This graph is then transformed into an integer transition system, whose termination can be proved by standard techniques. We implemented this approach in the automated termination prover AProVE and demonstrate its capability of analyzing C programs with pointer arithmetic that existing tools cannot handle
    corecore